/*!
 * @file font.hh
 * @brief Klasa czcionki
 */

#ifndef __ENGINE_BASIC_FONT_HH
#define __ENGINE_BASIC_FONT_HH

#include <string>
#include <iostream>

#include <SDL/SDL.h>
#include <SDL/SDL_ttf.h>

#include "engine/basic/color.hh"
#include "engine/basic/texture.hh"

/*!
 * @brief Czcionka
 */
class font {
public:
	/*!
	 * @brief Konstruktor. Tworzy czcionkę o zadanych parametrach.
	 * @param path Adres do pliku ttf.
	 * @param size Rozmiar.
	 * @return Obiekt
	 */
	font(std::string path, int size);

	/*!
	 * @brief Renderowanie zadanego tekstu.
	 * @param tx Tekstura na której należy wyrenderować.
	 * @param text Tekst do renderowania
	 * @param cl Kolor
	 */
	void renderToTexture(texture *tx, std::string text, color cl) const;

	/*!
	 * @brief Funkcja tworzy tymczasową teksturę, renderuje na niej, maluje ją na ekranie, po czym usuwa.
	 * @param pos Pozycja na ekranie
	 * @param cl Kolor
	 * @param content Tekst do wyrenderowania
	 */
	void renderToScreen(point2f pos, color cl, std::string content) const;

	/*!
	 * @brief Sprawdzenie statusu czcionki.
	 * @return Czy czcionka wczytana poprawnie
	 */
	bool status() const;

	/*!
	 * @brief Zwraca adres.
	 * @return Adres.
	 */
	std::string getPath() const;

	/*!
	 * @brief Zwraca rozmiar.
	 * @return Rozmiar.
	 */
	int getSize() const;

private:
	/*!
	 * @brief Obiekt pochodzący z bibliotek SDL_TTF. Służy do renderingu.
	 */
	TTF_Font *ttffont;

	/*!
	 * @brief Adres wczytanego pliku ttf.
	 */
	const std::string path;

	/*!
	 * @brief Zadany w konstruktorze rozmiar.
	 */
	const int size;
};

#else
class font;
#endif
